﻿using System;
using System.Windows.Forms;
using System.Data;
// Пространство имен для работы с базами данных SQL Server
//using System.Data.SqlClient;
using System.Drawing;
using System.Diagnostics;
using FuncSystem;
using FuncCandels;
using Strategys;

using System.Threading;



class DataInOutGrid : Form
{
    DataGridView dataGridView;

    public DataInOutGrid(DataTable Table)
    {
        //Изменяем размеры формы
        this.Width = 1350;
        this.Height = 400;
        // Указываем заголовок окна
        this.Text = "Название окна";
        // Добавляем элементы управления - 
        //метку, таблицу и командную кнопку
        Label labelCaption = new Label();
        labelCaption.Text = "Название таблицы";
        labelCaption.Location = new Point(90, 10);
        labelCaption.Width = 200;
        labelCaption.Parent = this;
        dataGridView = new DataGridView();  // Добавляем элемент DataGridView на форму
        dataGridView.Width = 1300;
        dataGridView.Height = 250;
        dataGridView.Location = new Point(20, 70);
        dataGridView.AutoResizeColumns();
        this.Controls.Add(dataGridView);
        dataGridView.DataSource = Table; // передаем таблицу в форму       
    }


    static DataTable runDiv()
    {
        string thisDay,thisTime ;

        //DataTable CandelsTable = CandelsData.GetCandles("SBER", "30", "20100101", thisDay);

        //CandelsTable = CandelsData.GetMACDTable(CandelsTable, 12, 26, 9, "close"); // получаем таблицу MACD
        DataTable WorkTable = new DataTable();
        DataTable Signal = new DataTable();
        Signal.Columns.Add("seccode", typeof(string));
        Signal.Columns.Add("date", typeof(string));
        Signal.Columns.Add("time", typeof(string));
        Signal.Columns.Add("name", typeof(string));
        Signal.Columns.Add("short_long", typeof(string));
        Signal.Columns.Add("forces", typeof(decimal));
        Signal.Columns.Add("price", typeof(decimal));
        Signal.Columns.Add("comments", typeof(string));
        Signal.Columns.Add("TF", typeof(string));
        Signal.Columns.Add("Type", typeof(string));

        DataTable TickersTable = new DataTable();
        TickersTable.Columns.Add("seccode", typeof(string));
        TickersTable.Columns.Add("TF", typeof(int));
        TickersTable.Columns.Add("seccode_trans", typeof(string));

        TickersTable.Rows.Add("RIZ1", 30, "FRTS");
        TickersTable.Rows.Add("RIZ1", 1440, "FRTS");
        TickersTable.Rows.Add("BRZ1", 30, "BRENT");
        TickersTable.Rows.Add("BRZ1", 1440, "BRENT");
        TickersTable.Rows.Add("GDZ1", 30, "GD");
        TickersTable.Rows.Add("GDZ1", 1440, "GD");
        TickersTable.Rows.Add("GZZ1", 30, "FGAZ");
        TickersTable.Rows.Add("GZZ1", 1440, "FGAZ");
        TickersTable.Rows.Add("SBER", 30, "ASBR");
        TickersTable.Rows.Add("SBER", 1440, "ASBR");
        TickersTable.Rows.Add("RTSI", 30, "RTSI");
        TickersTable.Rows.Add("RTSI", 1440, "RTSI");
        TickersTable.Rows.Add("GAZP", 30, "AGAZ");
        TickersTable.Rows.Add("GAZP", 1440, "AGAZ");        
        TickersTable.Rows.Add("EDZ1", 1440, "ED");
        TickersTable.Rows.Add("EDZ1", 30, "ED");
        TickersTable.Rows.Add("SRZ1", 1440, "FSBR");
        TickersTable.Rows.Add("SRZ1", 30, "FSBR");


        
        DateTime StartTime = DateTime.Now.AddDays(-0); // прогнать диву за последние 5 дней
        StartTime = StartTime.AddHours(-8); // прогнать диву за последние 5 дней
        DateTime timefinish = DateTime.Now;



       
        

        //DateTime RunTime =;
        while (StartTime < timefinish)
        {
            thisDay = DateTime.Now.ToString("yyyyMMdd");
            thisTime = DateTime.Now.ToString("HHmmss");

           thisDay = StartTime.ToString("yyyyMMdd");
            thisTime = StartTime.ToString("HHmmss");
           
            foreach (DataRow row in TickersTable.Rows)
            {
                
                WorkTable = CandelsData.GetQuikCandles( Convert.ToString(row["seccode"]), Convert.ToString(row["TF"]), Convert.ToString(row["seccode_trans"]), "20100101", thisDay, thisTime);
                Div.DivMACD(WorkTable, Signal, "шорт", 0);
                Div.DivMACD(WorkTable, Signal, "лонг", 0);
            }
            
            StartTime = StartTime.AddMinutes(30);
            if (Convert.ToInt32(StartTime.ToString("HHmmss")) < 100000) StartTime = StartTime.AddHours(10);
           // MessageBox.Show(StartTime.ToString("HHmmss"));

        }
       

       return Signal;
      //return WorkTable;
    }
    //static void Go(DataTable WorkTable, DataTable Signal)
    //static void Go()
    //{
    //    Div.DivMACD(WorkTable, Signal, "лонг", 0);
    //}

    static void Main()
    {

        if ((int)DateTime.Now.DayOfWeek > 5 && DateTime.Now.Hour < 10) return;
        //MessageBox.Show(Convert.ToString((int)DateTime.Now.DayOfWeek));
        
        //Stopwatch stopWatch = new Stopwatch();// таймер выполнения 
        //stopWatch.Start();

        // Data.toBDSignal(runDiv()); //пишем результат в базу


        Application.Run(new DataInOutGrid(runDiv())); // Создаем и запускаем форму, смотрим результат на экране, в базу нпишется

        

        // пишем результат в файл
        //string filename = thisDay + "_" + DateTime.Now.ToString("HHmmss") + "_" + "divnew" + ".txt";
        //Data.toCSV(Signal, @"c:\Program Files\QuikFinam\qpile\trade\Exp\" + filename, 0, ";");

        //stopWatch.Stop();
        //TimeSpan ts = stopWatch.Elapsed;
        //string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
        //MessageBox.Show(elapsedTime);
    }

}
 

